System and method for generating multi-category searchable ternary tree data structure

ABSTRACT

Systems, methods, and computer-readable media are disclosed herein that generate a ternary tree data structure that includes multiple categories (e.g., terminologies) using dynamic array modifications that facilitate sharing of one or more nodes across categories. A plurality of different categories may be added and stored within a single ternary tree data structure such that each categories may be separately queried using the single ternary data structure.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation that claims the benefit of priorityto non-provisional U.S. application Ser. No. 16/717,454, entitled“System and Method for Generating Multi-category Searchable Ternary TreeData Structure” and filed on Dec. 17, 2019, the entirety of which isincorporated by reference herein.

BACKGROUND

A ternary tree is a specialized data structure that supports incrementalstring searching applications such as, for example, automatedcomputerized spell-checking and term auto-completion in text (e.g., fullor partial words, phrases). In a ternary tree, there is a root node thatserves as the base of the ternary tree and which does not have a parentnode. Nodes are generally connected to one another using a pointer. Eachnode may be connected, by a pointer, to zero (i.e., null) child nodes orup to three child nodes.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter. The present invention is defined by the claims as supported bythe Specification, including the Detailed Description.

In brief and at a high level, this disclosure describes, among otherthings, methods, systems, and computer-readable media for generating asingle ternary tree data structure that corresponds to multipledifferent terminologies using dynamic, nested arrays that facilitatesharing of one or more nodes across terminologies, as describedhereinafter.

A computerized method is provided herein. The computerized methodcomprises generating a ternary tree using a first terminology thatcomprises one or more terms, and the one or more terms comprise one ormore characters, in embodiments. The ternary tree comprises a firstplurality of nodes, in embodiments, and the first plurality of nodescorrespond to the one or more characters. In embodiments, the firstplurality of nodes are arranged to represent the one or more terms ofthe first terminology. The method further comprises adding a secondterminology to the ternary tree, wherein the second terminologycomprises one or more additional terms, and the one or more additionalterms comprise the one or more characters, in embodiments. Adding thesecond terminology to the ternary tree comprises, in some embodiments,reusing one or more of the first plurality of nodes to represent the oneor more characters for the one or more additional terms of the secondterminology.

Another embodiment provides one or more non-transitory computer-readablemedia having computer-readable instructions embodied thereon that, whenexecuted, perform a method. In embodiments, a first plurality of termsof a first terminology are identified, wherein the first plurality ofterms comprise a first plurality of characters. In some embodiments, afirst plurality of nodes are generated and are arranged to represent thefirst plurality of terms. In embodiments, each node in the firstplurality of nodes corresponds to one of the first plurality ofcharacters, and the first plurality of nodes form a ternary tree. Eachnode of the first plurality of nodes has a corresponding array thatstores a first nested array, and the first nested array stores a termmatch number that is specific to the first terminology for thatparticular node, in some embodiments. In one embodiment, a secondplurality of terms of a second terminology are identified. The secondplurality of terms comprise a second plurality of characters. In someembodiments, at least a portion of the second plurality of charactersmatch a portion of the first plurality of characters. Continuing, aportion of the first plurality of nodes in the ternary tree isdetermined to correspond to the portion of the second plurality ofcharacters that match the portion of the first plurality of characters,in some embodiments. In some embodiments, a second plurality of nodesare generated and are arranged to represent the second plurality ofterms in the ternary tree. Each node in the second plurality of nodescorresponds to one of the second plurality of characters, and each nodeof the second plurality of nodes has a corresponding array that stores aterm match number, in embodiments. In various embodiments, the ternarytree includes the first and second plurality of nodes arranged torepresent the first terminology and the second terminology.

In yet another embodiment, one or more non-transitory computer-readablemedia having computer-executable instructions embodied thereon that,when executed, perform a method. The method comprises performing astring query in a ternary tree, in embodiments, wherein the ternary treecomprises a plurality of nodes that represent at least a first andsecond terminology. The method further comprises determining the stringquery is designated for the first terminology, in embodiments. Theplurality of nodes are traversed in the ternary tree based on the stringquery, in one embodiment. A first search result corresponding to thestring query is located, in some embodiments, wherein the first searchresult corresponds to a node having an array, where the array stores atleast a term match number of the first terminology. In embodiments, thefirst search result that is specific to the first terminology isreturned.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are described in detail below with reference to the attacheddrawings figures, wherein:

FIG. 1 is a diagram of an example data structure in accordance withembodiments of the present invention;

FIG. 2 is a block diagram of an example system in accordance with anembodiment of the present invention;

FIG. 3 is a flow diagram showing an example method in accordance with anembodiment of the present invention;

FIG. 4 is a flow diagram showing an example method in accordance with anembodiment of the present invention;

FIG. 5 is a flow diagram showing an example method in accordance with anembodiment of the present invention; and

FIG. 6 is an example environment suitable to implement embodiments ofthe present invention.

DETAILED DESCRIPTION

The subject matter of the present invention is described withspecificity herein to meet statutory requirements. However, thedescription itself is not intended to limit the scope of this patent.Rather, the inventors have contemplated that the claimed subject mattermight also be embodied in other ways, to include different steps orcombinations of steps similar to the ones described in this document, inconjunction with other present or future technologies. Moreover,although the terms “step” and/or “block” may be used herein to connotedifferent elements of methods employed, the terms should not beinterpreted as implying any particular order among or between varioussteps herein disclosed unless and except when the order of individualsteps is explicitly described.

Conventional ternary tree data structures do not permit multiplecategories to be stored within a single ternary tree. Instead,conventional technologies are limited such that only one category iscapable of being stored in one ternary tree at a given time. As such,conventional technologies require that a separate ternary tree becreated and used for each search category.

In contrast, the embodiments herein provide for the generation of asearchable ternary tree that stores multiple categories (e.g.,terminologies being a type of category) within the single searchableternary tree. In order to generate a single ternary tree that storesmultiple categories within itself, embodiments herein provide for one ormore nodes in the ternary tree to be reused and shared across more thanone category. As such, data that is common between two or morecategories may be represented using a reused or shared node within thesingle ternary tree.

Embodiments herein generate a ternary tree using a first terminologythat comprises one or more terms. Each term generally corresponds to aword, and the term comprises a specific sequence of one or morecharacters. For example, the term “cat” may be formed using a specificsequence of the alphanumeric characters “c,” “a,” and “t.” In anotherexample, the term “camp” may be formed using a specific sequence of thealphanumeric characters “c,” “a,” “m,” and “p.” It will be understoodthat roman alphanumeric characters are discussed herein for simplicityonly and are not to be construed as limiting the characters, terms,terminologies, and ternary tree discussed herein. As such, othernon-roman characters (e.g., Cyrillic, Greek, Arabic, Hebrew, Japanese,Korean, Tamil, and Thai alphabets) may be used and are contemplated tobe within the scope of the invention. Also, it will be understood that,while characters are discussed herein for simplicity and are not to beconstrued as limiting, a node may represent or correspond to anon-character such as an object or a pointer to an object.

A simplified example of a ternary tree 100 is shown in FIG. 1. Forexample, a ternary tree may have 100+ or beyond 100,000+ nodes. In theternary tree 100, a plurality of nodes are generated for the firstterminology and each of the nodes corresponds to one of the characters.For example, the node 102 corresponds to the character “c” and anothernode 104 corresponds to the character “a,” while yet another node 106corresponds to the character “r.” Node 108 corresponds to the character“n,” in the example. Generally, as shown in FIG. 1, the plurality ofnodes are arranged to represent one or more terms of the firstterminology. Each of the nodes may be connected to one or more othernode(s) using a pointer, also interchangeably referred to as a directededge. Pointers are generally represented using an angled or verticalline as shown in FIG. 1. For example, a first pointer 110 connects node108 (“n”) to node 106 (“r”) while a second pointer 112 connects node 108(“n”) to node 113 (“m”). Accordingly, when an incremental string queryis performed to search the ternary tree 100, the nodes may be followedfrom node to node via pointers, to identify search results such as theterms “cart” and “cardio.” Generally, a “high pointer” points to acharacter, as represented by a node, whose value is greater than thecurrent node and a “low pointer” points to a character, as representedby a node, whose value is less than the current node. An “equal pointer”is represented as a vertical line, which points to a character, asrepresented by a node, whose value is equal to the current node.

In embodiments herein, and unlike conventional technologies, a secondterminology is added to the same ternary tree that includes the firstterminology. The second terminology generally includes at least one termthat is different or in addition to the terms of the first terminology.In some embodiments, the first and second terminologies may share one ormore of the same terms. In one embodiment, the first and secondterminologies share less than 50% overlap in their terms. In variousembodiments, the second terminology comprises one or more additionalterms (relative to the first terminology) that may not be present andmay be added into the ternary tree. The one or more additional termscomprise one or more characters, in embodiments, such that the samealphanumeric characters are generally shared between the first andsecond terminologies. For example, the first and second terminologiesmay both comprise terms that are represented or “spelled” using the samecharacters (e.g., letters “a” through “z” in the English language).

In adding the second terminology to the same ternary tree that includesthe first terminology, one or more of the first plurality of nodes arereused in order to represent the one or more characters for the one ormore additional terms of the second terminology. In one example, shownin FIG. 1 in the ternary tree 100, node 102 (“c”), node 104 (“a”), andnode 108 (“n”) may correspond to the term “can” of the first terminologyand the same nodes are reused to correspond to the term “cannot” of thesecond terminology, where the characters of the terms of the twodifferent terminologies at least partially overlap. In this example,node 114 (“n”), node 116 (“o”), and node 118 (“t”) are added to theternary tree 100 to represent the term “cannot” of the secondterminology. All of the nodes corresponding to the term “cannot” areconnected by pointers. In another example, in the ternary tree 100, thenode 102 (“c”), node 104 (“a”), and node 106 (“r”) were previously addedto represent the term “cart” of the first terminology and these nodesmay be reused to correspond to at least a portion of the term “cardiac”of the second terminology, where the characters of the different termsof the different terminologies at least partially overlap. In thisexample, node 122 (“d”), node 124 (“i”), and node 126 (“a”), etc., havebeen added to the ternary tree 100 to represent the term “cardiac” inthe second terminology. All of the nodes corresponding to the term“cardiac” are connected by pointers.

In a further example, a third terminology may be added to the sameternary tree by reusing each of node 102 (“c”), node 104 (“a”), node 106(“r”), node 122 (“d”), and node 124 (“i”) while adding a new node 130(“o”) to represent the term “cardio” of the third terminology. In yetanother example, in the ternary tree 100, node 102 (“c”), node 104(“a”), node 106 (“r”) and node 128 (“t”) may correspond to the term“cart” of the first terminology and the same nodes may be reused tocorrespond to the term “cart” of the second terminology, where the termof the two different terminologies is the same. In this example, noadditional nodes are added to the ternary tree for the term but insteadthe nodes are reused for both the first and second terminologies, asfurther explained hereinafter.

At a high level, a second terminology (or any number of additionalterminologies) are added to the same ternary tree by determining whethera node exists for a character (e.g., “o”) of a particular term (e.g.,“cardio”) in the second terminology. When the node is present (e.g., thefive nodes representing the sequence of characters “cardi” are presentin the ternary tree 100 since the first terminology included the term“cardiac”), the arrays for the existing nodes are resized such that theexisting nodes are reused, or shared by more than one terminology in theternary tree. When a node for a character of a term of the secondterminology is absent from the ternary tree (e.g., an “o” child node isabsent under the parent “i” node in the ternary tree 100), a new node isinserted for the character of the term of the second terminology. Inthis way, nodes are added to a ternary tree as needed, while existingnodes are reused. Accordingly, embodiments herein provide for thegeneration and use of a single searchable ternary tree that storesmultiple categories (e.g., terminologies) by reusing and sharing nodesacross more than one category.

After the ternary tree 100 has been generated and multiple terminologiesare added, the ternary tree 100 may be searched, as further describedherein. As should be understood by those persons having an ordinarylevel of skill in the particular art, when a search is performed, eachnode is evaluated and all branches from are node are evaluated in theternary tree 100 are searched. For example, in searching the ternarytree for a term, the search generally moves from node to node throughthe ternary tree 100, beginning from a root node. In one example,regarding the string “cam,” the search would obtain the correspondingarray (including any nested arrays as further discussed hereinafter) atnode 113 (“m”). Then, the search may proceed to the next level in theternary tree 100, by examining all available children of node 113 (“m”)include the middle child node that represents the character “p.”Finally, the search may identify the node “p” has zero child nodes, andthe search would stop or be considered complete. In this example, thesearch would obtain the corresponding array (including a nested array asfurther discussed hereinafter) for that node representing the character“p.” In the example, when returning a search result such as “camp,” thecorresponding array (including any nested array and stored value(s) asfurther discussed hereinafter) for the terminal node “p” may serve asthe term match number(s).

Turning to FIG. 2, an example system 200 is shown in accordance with anembodiment of the present invention. In some embodiments, the system 200comprises a server 202. In embodiments, the server 202 comprises aninitialization component 204, a tree structuring component 206, an arraymanagement component 208, a node comparison component 210, and a querycomponent 212. The server 202 may be a physical server or a virtualserver, or a set or a collection of physical servers and/or virtualservers, in some embodiments. In such embodiments, the server(s) maycommunicate with one another over a network, and the server(s) mayoperate in a distributed networking environment. The server(s) maycommunicate locally with one another, in one embodiment, such that theserver(s) may operate within a localized networking environment.

In some embodiments, the initialization component 204 is configured toidentify a first plurality of terms of a first terminology, wherein thefirst plurality of terms comprise a first plurality of characters. Inembodiments, the tree structuring component 206 is configured to build aternary tree data structure by generating a first plurality of nodesthat are arranged to represent the first plurality of terms. Each nodein the first plurality of nodes corresponds to one of the firstplurality of characters, in embodiments. Each node of the firstplurality of nodes has a corresponding array that stores a term matchnumber for the corresponding character, in some embodiments, as storedby the tree structuring component 206. As used herein, a “term matchnumber” generally refers to any integer, including zero, but may referto a null value. In embodiments, each term match number references alist of terms for the terminology.

In various embodiments, the initialization component 204 is configuredto identify a second plurality of terms of a second terminology, whereinthe second plurality of terms comprise a second plurality of charactersand at least a portion of the second plurality of characters match atleast a portion of the first plurality of characters (e.g., sharedalphabet). The node comparison component 210 is configured to determinewhether a portion of the first plurality of nodes corresponds to thatparticular portion of the second plurality of characters that matchesthe portion of the first plurality of characters, in embodiments. Theportion of the first plurality of nodes (which is determined to match)may be reused to represent one or more terms of the second terminology,as further discussed herein. For the portion of the first plurality ofnodes to be shared or reused, the array management component 208, inembodiments, is configured to automatically resize the array of eachnode in the portion of the first plurality of nodes to be shared orreused. For example, the array management component 208 may increase thearray size by expanding the array boundary to nest one or more innersarrays within the outer array, for each of the reusable nodes.

For example, within an outer array for one reusable node, one or moreterm match numbers for a first terminology may be stored in a firstnested array and one or more term match numbers for a second terminologymay be stored in a second nested array. The one or more term matchnumbers in the second nested array include information for the secondterminology, for example. The array management component 208 may workwith the tree structuring component to add one or more term matchnumbers for the additional nested arrays (e.g., second nested array,third nested array) placed within the outer arrays of the nodes, as wellas for creating new nodes that are added in the ternary tree for thesubsequent terminology.

For example, the tree structuring component 206 is configured togenerate a second plurality of nodes that are arranged to represent thesecond plurality of terms in the ternary tree. Each node in the secondplurality of nodes corresponds to one of the second plurality ofcharacters, and each node in the second plurality of nodes has acorresponding array that stores a term match number. The secondplurality of nodes are generated for those characters in the terms ofthe second terminology that are absent from the ternary tree, inembodiments. Generally, the second plurality of nodes that are added tothe ternary tree are those nodes that are not being reused or sharedbetween the first and second terminologies. Accordingly, the newly addednodes corresponding to terms that are, at least, partially absent fromthe first terminology.

Subsequently, after two or more terminologies have been added to theternary tree by repeating the actions above for each term in eachterminology, and subsequent to rendering the ternary tree immutable, thequery component 212, in embodiments, is configured to execute stringqueries against the ternary tree and use the term match values in nestedinner arrays, for example, to locate positions in terminology-specificlists as search results.

Continuing to FIGS. 3-5, methods are discussed that can be performed viaone or more of the components and component interactions previouslydescribed in FIG. 2. As such, the methods are discussed briefly forbrevity, though it will be understood that the previous discussion canbe applicable to aspects of the methods of FIGS. 3-5. In variousembodiments, one or more non-transitory computer-readable storage mediahaving computer-readable instructions or computer-readable program codeportions embodied thereon, for execution via one or more processors, maybe executed to implement and/or perform one or more of the methods shownin FIGS. 3-5. For example, computer-readable instructions orcomputer-readable program code portions can specify the performance ofthe methods, can specify a sequence of steps of the methods, and/or canidentify particular component(s) of a software and/or hardware forperforming one or more of the steps of the methods, in embodiments. Thecomputer-readable instructions or computer-readable program codeportions can correspond to an application plugin or an applicationprogramming interface (API), in some embodiments. In one embodiment, theplugin or API can implement and/or perform the methods. As discussedbelow, the methods can be performed using any and all of the software,hardware, component(s), and/or device(s) shown in FIGS. 2 and 6.

FIG. 3 presents a flow diagram of an example method 300 for generating aternary tree comprising multiple categories (e.g., terminologies).Beginning at block 302, a ternary tree is generated by using a firstterminology that comprises one or more terms to generate a firstplurality of nodes. In embodiments, the one or more terms comprise oneor more characters. In one example, the first terminology is a SNOMEDterminology having 300,000+ terms and/or concepts. In generating theternary tree, a first plurality of nodes are generated and correspond tothe one or more characters, and the first plurality of nodes arearranged to represent the one or more terms, in embodiments. Forexample, each of the nodes in the plurality may represent one letter ofan alphabet, and letters may be reused throughout the ternary tree. Inanother example, each of the nodes in the plurality may be arranged, byconnecting nodes using pointers, to form sequences of letters that spellthe one or more terms. In one embodiment, the first plurality of nodesare arranged to represent the one or more terms of the first terminologyby connecting each of first plurality of nodes using a high pointer, anequal pointer, and/or a low pointer to at least one other node.

At block 304, a second terminology is added to the ternary tree, inembodiments. For example, one or more nodes are added to the ternarytree to represent one or more terms of the second terminology, and theone or more terms comprise the one or more characters. The one or moreterms of the second terminology generally comprise the one or morecharacters, such that, for example, the first and second terminologiesshare an alphabet. In embodiments, the second terminology comprises oneor more terms that are absent from the first terminology. As such, thesenew terms or additional terms of the second terminology are added to theternary tree as a second plurality of nodes. In one example, the secondterminology is an ICD-10-CM/PCS terminology while the first terminologycomprises a SNOMED terminology. In this example, the terms of theICD-10-CM/PCS terminology are added as a second plurality of nodes tothe same ternary tree that includes the first plurality of nodes createdfor the SNOMED terminology. It will be understood that these medicalterminologies are discussed as examples only and are not to be construedas limiting the categories, terms, terminologies, characters, andternary tree of embodiments herein. Any number and kind of terminologymay be used in embodiments herein for generating a ternary treecomprising multiple categories (e.g., terminologies) via reusable nodes.

In some embodiments, adding the second terminology comprises reusing oneor more of the first plurality of nodes to represent one or morecharacters for the second terminology. As mentioned in regard to theexample ternary tree 100 of FIG. 1, node 102 (“c”), node 104 (“a”), andnode 106 (“r”) were added to represent the term “cart” of the firstterminology and these nodes may be reused to correspond to the term“cardiac” of the second terminology, where the characters of the termsof the two different terminologies at least partially overlap. In thatexample, node 122 (“d”), node 124 (“i”), and node 126 (“a”), etc., areadded to the ternary tree to represent the term “cardiac” in the secondterminology.

In embodiments, adding the second terminology to the ternary treecomprises determining that one or more of the first plurality of nodesin the ternary tree (i.e., from the terms of the first terminology)correspond to the one or more characters of the one or more terms of thesecond terminology. These one or more of the first plurality of nodesmay be reused. Such that the reusable nodes support searches of both thefirst and second terminology. However, one or more terms of the secondterminology may not be represented by the first plurality of nodes inthe ternary tree.

In an embodiment, adding the second terminology to the ternary tree maycomprise determining whether one or more of the first plurality of nodesin the ternary tree correspond to the one or more characters of the oneor more additional terms of the second terminology. In one embodiment,adding the second terminology to the ternary tree may comprise insertinga new node into the ternary tree when one or more of the first pluralityof nodes in the ternary tree do not correspond to the characters of atleast one term of the second terminology. These new nodes are not reusedor shared with the first terminology, for example. The process of addingterminologies can be repeated to add any number of terminologies to theternary tree.

Continuing, FIG. 4 provides a method 400 for generating a ternary treecomprising multiple categories (e.g., terminologies) via reusable nodes.In accordance with the method 400, a first plurality of terms of a firstterminology is identified at block 402, wherein the first plurality ofterms comprise a first plurality of characters. At block 404, a firstplurality of nodes are generated and are arranged to represent the firstplurality of terms such that each node in the first plurality of nodescorresponds to one of the first plurality of characters. In embodiments,the first plurality of nodes form a ternary tree, based on thearrangement of the parent nodes and child nodes, connected by pointers.Each node of the first plurality of nodes has a corresponding array thatstores one or more term match numbers for the node, in embodiments. Forexample, as only the first terminology is presently represented in theternary tree data structure in the method 400, each node in the ternarytree has a corresponding array that stores one array (e.g., size one).

At block 406, a second plurality of terms of a second terminology areidentified, wherein the second plurality of terms comprise a secondplurality of characters. In some embodiments, one or more of the secondplurality of terms may be the same as, or similar to, one or more of thefirst plurality of terms. In a further embodiment, two or more of thesecond plurality of terms may be the same as, or similar to, two or moreof the first plurality of terms. In embodiments, one or more of thesecond plurality of terms may be different from the first terminology,such that the one or more of the second plurality of terms are absentfrom the first terminology. These one or more terms of the secondterminology are new terms or additional terms that are absent from thefirst terminology. As such, the ternary tree, at that time in the method400, may not include nodes that correspond in arrangement to the newterms of the second terminology. Generally, at least a portion of thesecond plurality of characters match at least a portion of the firstplurality of characters, such that, for example, the first and secondplurality of characters correspond to the same, or to a similar,alphabet.

The terms of the second terminology may then be added to the ternarytree. For each term, the ternary tree is traversed from the root node toparent nodes to child nodes, traversing the pointers. For example, inorder to add the term “cardio” of the second terminology, the ternarytree is traversed to locate a node “c” followed (directly or indirectly)by a child node “a” and further followed by a child node “r” and so on,in an effort to locate the term in the ternary tree. Accordingly, thenodes for the characters “c,” “a,” and “r” of the first terminology asarranged in the ternary tree correspond to the characters “c,” “a,” and“r” in the term “cardio” of the second terminology.

Thus, at block 408, a portion of the first plurality of nodes in theternary tree are determined to correspond to the portion of the secondplurality of characters that matches the portion of the first pluralityof characters. Based on the portion of the first plurality of nodes incorresponding to the “matching” portion of the second plurality ofcharacters, the portion of the first plurality of nodes may be reusedwhen adding the terms of the second terminology to the one ternary tree,in embodiments. For example, when adding the second terminology to theternary tree, the nodes of the ternary tree are traversed in order tolocate whether each of the terms of the second terminology is alreadypresent in the ternary tree, based on the presence and sequence ofcharacters arranged in the first plurality of nodes. When the first andsecond terminology share a particular term, all of the nodes for thatparticular term are located in the first plurality of nodes that arearranged to form the term within the ternary tree, for example. As such,at least some portion of the first plurality of nodes in the ternarytree are determined to correspond to the particular term, which is atleast a portion of the second plurality of characters that match theportion of the first plurality of characters (e.g., characters ofexisting nodes match the characters of a term from the secondterminology). Based on the matching characters arranged to form theparticular term, the term of the second terminology is determined toexist in the ternary tree. As such, no new nodes are added to theternary tree to represent that specific term for the second terminology,in embodiments. The portion of the first plurality of node thatcorresponds to the matching first and second plurality of characters arenodes that are reused and “shared” by the first and secondterminologies.

In embodiments, when a node exists for a desired character of a term forthe second terminology, the corresponding array for that node isautomatically resized to facilitate node reuse or node sharing acrossterminologies. Accordingly, when the node exists for the desiredcharacter of the term begin added to the ternary tree for the secondterminology, the boundaries or “size” of the array for that node isdetermined. Prior to resizing, the existing array for the node has acurrent boundary or size (e.g., the array stores one or more matches forthat node for the first terminology, [9, 12, 62]), for example. Thearray is automatically resized to a new size of that is at least onearray size larger than before (e.g., the array stores one or morematches for that node for the second terminology, [7, 29, 62], as wellas the one or more matches for that node for the first terminology, [9,12, 62]), in embodiments. When resizing the array, the boundary of thearray is made at least one size larger, in embodiments. The resizedincludes two arrays nested into the original array, in this example,such that the array appears as [[9, 12, 62] [7, 29, 42]]. In someembodiments, the array is automatically resized by multiplying the sizeof the current array by a ratio of 1.5 (e.g., array of size one ismultiplied by 1.5 to create the resize array).

In embodiment, the first nested array stores one or more matches forthat node for the first terminology, and the second nested array one ormore matches for that same node for the second terminology. However,both arrays are nested into the corresponding resized array for thereusable node. Accordingly, the corresponding resized array may appearas an outer set of brackets, where each inner array has its own set ofbrackets, such that the numbers inside each set of brackets correspondto one or more term matches for that particular node, and each set ofinner brackets corresponds to a different terminology, in someembodiments. Thus, in embodiments, when resizing an array for any numberof subsequently added terminologies, the current array for a node iscopied, including the one or more numbers for term matches that arestored in the corresponding array (including nested arrays) at thattime. The corresponding array is resized to be at least one size larger(e.g., an inner array is inserted as denoted by a new set of bracketscontaining new numbers for term matches), in embodiments. For example,the one or more copied term match numbers of the first array areinserted into the resized array along with a new second nested arraywith new numbers for the new terminology.

In addition to automatically resizing an array to add additional innernested arrays for newly added terminologies, additional term matchnumbers may be added within an inner nested array to reflect additionalterm matches as the terms are added to the ternary tree. For example,the inner nested array for a terminology may be resized from having twoterm match numbers (e.g., second nested array [7, 29]) to having threeterm match numbers (e.g., second nested array [7, 29, 42]) when a thirdterm of the second terminology is added to the ternary tree with a matchat the node.

Accordingly, in embodiments, when one or more of the first plurality ofnodes in the ternary tree are determined to correspond to one or morecharacters of one or more terms of the second terminology, the existingarray of said one or more nodes that store at least one term matchnumber for the first terminology in a first nested array is copied.Then, in one such embodiment, the existing array(s) of each of the oneor more of the first plurality of nodes are replaced with new array(s)that are nested within the outer array. Each new resized array has afirst nested array that stores term match number(s) denoting one or moreterm matches for the first terminology. Additionally, each new resizedarray also includes a second nested array that stores term matchnumber(s) denoting one or more term matches for the second terminology,in various embodiments. In this way, the node is reused and shared byboth terminologies by resizing the outer corresponding array of thenode. As one node corresponds to one character, a node may be reused forthe same term in both the first and second terminologies, or may bereused for different terms of each of the first and secondterminologies, where the different terms share at least one character.

In embodiments, any number of terminologies may be added to the ternarytree. For example, as a new terminology is subsequently added to theternary tree (e.g., a third terminology being subsequently added to theternary tree after the second terminology, and after the firstterminology), a corresponding outer array may again be automaticallyresized to a new size (e.g., three nested arrays). Accordingly, a nodemay be reused so that the corresponding array of n can be resized to anarray size of n multiplied by at least one (e.g., any integer of 1 orgreater, such as 1, 1.5, 2) for each new terminology that is added whena node exists for a desired character of a term in the new terminology,in embodiments. Generally, “n” refers to any integer (including zero ofa null node/array) representing the number of inner nested arrays withinthe corresponding node-specific array. In one example, the identifiednode has a corresponding array of size n, and the corresponding array isupdated in size to be n multiplied by at least one in order to store theone or more term match numbers for that node in a first nested array forthe first terminology and the one or more term match numbers for thenode in a second nested array for the second terminology.

In one embodiment, the method 400 identifies the corresponding array nthat stores the term match number for the first terminology, and mayupdate the corresponding array to a size that is n multiplied by 1.5, inorder to enlarge the corresponding array. In such an embodiment,updating the corresponding array to a size that is n multiplied by 1.5may comprise copying the corresponding array n that stores the termmatch number(s) for the first terminology and further, inserting theterm match number(s) for the first terminology into a first nested arraywithin the corresponding array of n multiplied by 1.5. Further, termmatch number(s) may be added to a second nested array within thecorresponding array of n multiplied by 1.5. Thus, as enlarged, themethod 400 may store, within the corresponding array, the term matchnumber for the first terminology in a first nested array and the termmatch number for the second terminology in a second nested array.

However, for one or more other terms in the second terminology, a nodefor a character may be absent (i.e., the next desired character in asequence for spelling a particular term is not present in a child nodeand/or is absent as a child node). When a node is absent such that theterm of the second terminology is absent from the ternary tree, a nodefor the absent character is added or inserted into the ternary tree as achild node from the parent node, as linked by a pointer. A secondplurality of nodes may be added one-by-one for each absent character ofa term until the term is spelled within the ternary tree for the secondterminology. This process of adding or inserting new nodes, and ofautomatically resizing node arrays for existing nodes, may be repeatedfor each and every term of a second terminology that is being added tothe ternary tree.

In embodiments, information is stored that indicates which of one ormore terminologies have been entered into or added to the ternary tree,and that further indicates the order in which each of the one or moreterminologies were added to the ternary tree. In this manner, theinformation is usable to determine that, for a particular node, a firstnested array corresponds to the first terminology and that a secondnested array corresponds to the second terminology, for example. In oneexample, when five different terminologies have been added to theternary tree, each of the nodes that are shared by all fiveterminologies may have an outer corresponding array with five innernested arrays, and each of the inner arrays may have one or more termmatch numbers for a respective terminology. Further, in one suchexample, the order of the five nested arrays reflects the sequence ororder in which the five terminologies were added to the ternary tree.

At block 410, a second plurality of nodes are generated that arearranged to represent at least at portion of the second plurality ofterms in the ternary tree, wherein each node in the second plurality ofnodes corresponds to one of the second plurality of characters. Inembodiments, each node of the second plurality of nodes has acorresponding array that stores a term match number. The secondplurality of nodes are generated for one or more characters for one ormore terms of the second terminology that are determined to be absentfrom the ternary tree, in embodiments. Generally, the second pluralityof nodes that are added to the ternary tree are those nodes that are notbeing reused or shared between the first and second terminologies. Forexample, the second plurality of nodes that are generated correspond tothe second plurality of terms and do not correspond to the firstplurality of terms in the ternary tree. In embodiments, when each of thesecond plurality of nodes is added or inserted into the ternary tree, acorresponding array for the node is created having a size of n, and thecorresponding node may comprise one array. In this example, thecorresponding node for the term of the second terminology is such thatthe first nested array corresponds to the second terminology.

It should be understood from this description that the use of the terms“first,” “second,” and “third” with regard to the terminologies andnested arrays are not to be construed as limiting the information storedin that array to, respectively, the first, second, and thirdterminologies. Instead, the terms “first,” and “second” and “third”generally references the sequence in which terminologies are entered andmatched to the term and character for that particular node. For example,the first nested array within any given array corresponds to informationfor the particular terminology which resulted in the generation orinsertion of the node into the ternary tree (i.e., could be any of afirst, second, third, etc., terminology). As mentioned prior, in othernodes that are shared by the first and second terminologies, the firstnested array may store a term match number for the first terminology andthe second nested array may store a term match number for the secondterminology, in one example.

In another example, for one or more nodes that are shared by the firstand a third terminology but not by a second terminology, the firstnested array may store one or more term match numbers for the firstterminology, the second nested array may store a null value and/or is anempty array, and the third nested array may store one or more matchnumbers for the third terminology. In yet another example, for one ormore nodes that are shared by the second and a third terminology but notby a first terminology, the first nested array may store a null valueand/or is an empty array, the second nested array may store one or moreterm match numbers for the second terminology, and the third nestedarray may store one or more term match numbers for the thirdterminology. Thus, the sequence of the nested arrays within the wholearray for the node (i.e., the outer array brackets) reflects a sequenceof the entry of terminologies that match the specific node.

Accordingly, using the method 400, the one ternary tree is generatedthat includes the first and second plurality of nodes arranged torepresent the first terminology and the second terminology, wherein aportion of the first plurality of nodes are reused to representcharacters for terms in the first and second terminology. Further, inembodiments, the one ternary tree includes the first and secondplurality of nodes arranged to represent the first terminology and thesecond terminology, wherein the second plurality of nodes that wereinserted are not reused and represent characters for those terms thatonly belong to the second terminology. As stated hereinabove, any numberand kind of terminology may be added to the ternary tree wherein someportion of nodes may be reused for some or all of the terminologies, andwherein some other portion of nodes may be reused for only one or onlysome of the terminologies. Further, in some embodiments, a portion ofthe nodes may not be reused, such that some portion of the nodes may bespecific to only one of the multiple terminologies in the ternary tree.

In further embodiments, any number of terminologies may be added to theternary tree. For example, a third terminology may be added to theternary tree after the second terminology, which was after the firstterminology. In such further embodiments, the method 400 may identify athird plurality of terms of a third terminology. The third plurality ofterms may include a third plurality of characters that match at least aportion of the first plurality of characters. The method 400 maydetermine that a second portion of the first plurality of nodes asarranged in the ternary tree corresponds to the third plurality ofcharacters that match a portion of the third plurality of characters, inone embodiment. Accordingly, the second portion of the first pluralityof nodes are reused to represent the third plurality of characters ofthe third plurality of terms of the third terminology (i.e., sharedcharacters between the third terminology and the first terminology).Also, in some embodiments, a third plurality of nodes are generated andare arranged to represent at least a portion of the third plurality ofterms in the ternary tree. In such embodiments, the ternary treeincludes the first, second, and third plurality of nodes arranged torepresent the first, second, and third terminologies.

Prior to using a ternary tree to perform a string search (e.g., queryingthe ternary tree for a term in a string search using the query component212 of FIG. 2), in embodiments, the ternary tree is “frozen” in order tofix the placement of all nodes for all terminologies in themulti-category ternary tree. A ternary tree may be frozen using a linecommand, in embodiments. Generally, the line command “calls” a method onthe ternary tree and the ternary tree is made thread-safe and immutable(i.e., nodes can no longer be added or inserted, or deleted or removedfrom the ternary tree). As part of freezing the ternary tree, all of thenodes are analyzed such that null arrays are removed, empty arrays aremodified so that all empty arrays point to a single constant ‘empty’reference, and/or arrays are trimmed, in some embodiments. Once theternary tree has been frozen and thus made thread-safe, the one ternarytree can be used to search one or more, or all, of the terminologiespresent in the ternary tree, in embodiments.

FIG. 5 presents a flow diagram of an example method 500 for searching aternary tree comprising multiple categories (e.g., terminologies) viareusable nodes. At block 502, the method 500 comprises performing orotherwise initiating a string query in a ternary tree, the ternary treehaving a plurality of nodes that represent at least a first terminologyand second terminology. The method 500 further determines, at block 504,that the string query is designated for the first terminology., in someembodiments. Then, when performing the string query in the ternary tree,in an embodiment, the query begins at the root (node) and makes acomparison at each node to identify whether the character to which thenode corresponds is a match for a character in the string query.

At block 506, the plurality of nodes in the ternary tree are traversedbased on the string query, in embodiments. For example, when the firstcharacter “c” in the string query “cardio” has been matched to a nodethat corresponds to “c,” the query continues to the next level down inthe ternary tree, from that matching “c” node to one or more child nodesbranching off the matching node, in an effort to match the secondcharacter “a” in the string query “cardio” to locate a node thatcorresponds to “a.” At each match, the query continues to the childnodes below the “a” node, for example, until the nodes matching thecharacters and the sequence of the characters is located in the ternarytree, in the example. The nodes are traversed unless or until a nodethat corresponds to the last character “o” of the string query “cardio”has been located.

At block 508, a first search result corresponding to the string query islocated. The first search result corresponds to a node in the pluralityof nodes, the node having a corresponding array for the firstterminology. Generally, locating the first search result correspondingto the string query comprises traversing one or more pointers betweenthe plurality of nodes and performing comparisons. For example, the nodecorresponds to a character that matches the last or terminal character“o” in the string query “cardio.” The array that corresponds to the nodestores a term match number that is specific to the first terminology, inembodiments. In some embodiments, each of one or more inner arrays forone node may store multiple term match numbers, for example, an innernested array may store term match numbers that are specific to aparticular terminology within the ternary tree. Accordingly, in anembodiment, the specific term match number(s) that corresponds to thefirst terminology in the first nested array is/are identified andselected instead of other term match number(s) in a second nested arraythat is specific to the second terminology, for that one node. Forexample, the first nested array may be selected for return, ascorresponding to the string query based on the string query designatingthe first terminology. As such, when the string query is specific to aparticular terminology, the one or more term match numbers in a nestedarray that correspond to the particular terminology is chosen forreturning search results, in an embodiments. In some embodiments, basedon the string query designating the first terminology, a term matchnumber in a first nested array that is specific to the first terminologyis used for returning search results. In a similar manner, based on astring query designating the second terminology, the term match numberin a second nested array that is specific to the second terminology isused for returning search results, in one embodiment. At block 510, thefirst search result that is specific to the first terminology isreturned. The first search may comprise one or more term match numbersfrom a specific nested array, in various embodiments.

When returning a first search results, the term match number in a nestedarray for a character-matched node may be returned as being specific tothe first terminology. Generally, each term match number references alist of terms for the particular terminology to which the nested arraycorresponds. For example, where the first nested array specifies [9, 12,62], the term located at position 9, the term located at position 12,and the term located at position 62, within a list of terms for thefirst terminology are all retrieved as the search results.

In further embodiments, within the same tree, a subsequent string queryis performed, wherein the subsequent string query indicates to return aresult that is specific to the second terminology. In this furtherexample, a second search result that is specific to the secondterminology is returned. Specifically, the nodes are traversed unless oruntil a node that corresponds to the last character of the subsequentstring query has been located. The outer array for that particular nodeis located, and the inner nested array that is specific to the secondterminology within that array is returned as a second search result forsubsequent string query.

When returning a second search result, the term match number in a nestedarray for a character-matched node may be returned as being specific tothe second terminology. Generally, each term match number references alist of terms for the particular terminology to which the nested arraycorresponds. For example, where the second nested array specifies [7,29, 42], the term located at position 7, the term located at position29, and the term located at position 42, within a list of terms for thesecond terminology are all retrieved as the search results.

As such, in embodiments, the first search result for the first stringquery corresponds to an inner nested array for term(s) belonging to thefirst terminology, and the second search result for the subsequentstring query corresponds to another inner nested array for term(s)belonging to second terminology, yet both search results were supportedand provided using a single ternary tree. By relying on the nestedtwo-dimensional arrays that correspond to nodes, and which can storemultiple terminology-specific nested arrays, the ternary tree storesmultiple terminologies in one tree while supporting terminology specificqueries. In yet a further embodiment, the plurality of nodes may furtherrepresent a third terminology, such that a third string query may beperformed in the ternary tree and a third search result that is specificto the third terminology may be returned by identifying an inner nestedarray that corresponds to the third terminology for a particular node.

Finally, turning to FIG. 6, an example environment 600 is depicted, inaccordance with an embodiment of the present invention. It will beunderstood by those of ordinary skill in the art that the exampleenvironment 600 is just one example of a suitable computing environmentand is not intended to limit the scope of use or functionality of thepresent invention. Similarly, the example environment 600 should not beinterpreted as imputing any dependency and/or any requirements withregard to each component and combination(s) of components illustrated inFIG. 6. It will be appreciated by those having ordinary skill in the artthat the connections illustrated in FIG. 6 are also exemplary as othermethods, hardware, software, and devices for establishing acommunications link between the components, devices, systems, andentities, as shown in FIG. 6, may be utilized in implementation of thepresent invention. Although the connections are depicted using one ormore solid lines, it will be understood by those having ordinary skillin the art that the exemplary connections of FIG. 6 may be hardwired orwireless, and may use intermediary devices and/or components that havebeen omitted or not included in FIG. 6 for simplicity's sake. As such,the absence of devices and/or components from FIG. 6 should be not beinterpreted as limiting the present invention to exclude additionalcomponents and combination(s) of components. Moreover, though devicesand components are represented in FIG. 6 as singular devices andcomponents, it will be appreciated that some embodiments may include aplurality of the devices and components such that FIG. 6 should not beconsidered as limiting the number of a device or component.

Continuing, the example environment 600 of FIG. is illustrated as beinga distributed environment where components and devices may be remotefrom one another and may perform separate tasks. The components anddevices may communicate with one another and may be linked to each otherusing a network 602. The network 602 may include wireless and/orphysical (e.g., hardwired) connections. Exemplary networks include atelecommunications network of a service provider or carrier, Wide AreaNetwork (WAN), a Local Area Network (LAN), a Wireless Local Area Network(WLAN), a cellular telecommunications network, a Wi-Fi network, a shortrange wireless network, a Wireless Metropolitan Area Network (WMAN), aBluetooth® capable network, a fiber optic network, or a combinationthereof. The network 602, generally, provides the components and devicesaccess to the Internet and web-based applications.

The example environment 600 comprises a computing device 604 in the formof a server. Although illustrated as one component in FIG. 6, thepresent invention may utilize a plurality of local servers and/or remoteservers in the example environment 600. The computing device 604 mayinclude components such as a processing unit, internal system memory,and a suitable system bus for coupling to various components, includinga database or database cluster. The system bus may be any of severaltypes of bus structures, including a memory bus or memory controller, aperipheral bus, and a local bus, using any of a variety of busarchitectures. By way of example, and not limitation, such architecturesinclude Industry Standard Architecture (ISA) bus, Micro ChannelArchitecture (MCA) bus, Enhanced ISA (EISA) bus, Video ElectronicStandards Association (VESA) local bus, and Peripheral ComponentInterconnect (PCI) bus, also known as Mezzanine bus.

The computing device 604 may include or may have access tocomputer-readable media. Computer-readable media can be any availablemedia that may be accessed by the computing device 604, and includesvolatile and nonvolatile media, as well as removable and non-removablemedia. By way of example, and not limitation, computer-readable mediamay include computer storage media and communication media. Computerstorage media may include, without limitation, volatile and nonvolatilemedia, as well as removable and non-removable media, implemented in anymethod or technology for storage of information, such ascomputer-readable instructions, data structures, program modules, orother data. In this regard, computer storage media may include, but isnot limited to, Random Access Memory (RAM), Read-Only Memory (ROM),Electrically Erasable Programmable Read-Only Memory (EEPROM), flashmemory or other memory technology, CD-ROM, digital versatile disks(DVDs) or other optical disk storage, magnetic cassettes, magnetic tape,magnetic disk storage, or other magnetic storage device, or any othermedium which can be used to store the desired information and which maybe accessed by the computing device 604. Computer storage media does notcomprise signals per se.

Communication media typically embodies computer-readable instructions,data structures, program modules, or other data in a modulated datasignal, such as a carrier wave or other transport mechanism, and mayinclude any information delivery media. As used herein, the term“modulated data signal” refers to a signal that has one or more of itsattributes set or changed in such a manner as to encode information inthe signal. By way of example, and not limitation, communication mediaincludes wired media such as a wired network or direct-wired connection,and wireless media such as acoustic, radio frequency (RF), infrared, andother wireless media. Combinations of any of the above also may beincluded within the scope of computer-readable media.

In embodiments, the computing device 604 uses logical connections tocommunicate with one or more remote computers 606 within the environment600. In embodiments where the network 602 includes a wireless network,the computing device 604 may employ a modem to establish communicationswith the Internet, the computing device 604 may connect to the Internetusing Wi-Fi or wireless access points, or the server may use a wirelessnetwork adapter to access the Internet. The computing device 604 engagesin two-way communication with any or all of the components and devicesillustrated in FIG. 6, using the network 602. Accordingly, the computingdevice 604 may send data to and receive data from the remote computers606 over the network 602.

Although illustrated as a single device, the remote computers 606 mayinclude multiple computing devices. In an embodiment having adistributed network, the remote computers 606 may be located at one ormore different geographic locations. In an embodiment where the remotecomputers 606 is a plurality of computing devices, each of the pluralityof computing devices may be located across various locations such asbuildings in a campus, medical and research facilities at a medicalcomplex, offices or “branches” of a banking/credit entity, or may bemobile devices that are wearable or carried by personnel, or attached tovehicles or trackable items in a warehouse, for example.

In some embodiments, the remote computers 606 is physically located in amedical setting such as, for example, a laboratory, inpatient room, anoutpatient room, a hospital, a medical vehicle, a veterinaryenvironment, an ambulatory setting, a medical billing office, afinancial or administrative office, hospital administration setting, anin-home medical care environment, and/or medical professionals' offices.By way of example, a medical professional may include physicians;medical specialists such as surgeons, radiologists, cardiologists, andoncologists; emergency medical technicians; physicians' assistants;nurse practitioners; nurses; nurses' aides; pharmacists; dieticians;microbiologists; laboratory experts; genetic counselors; researchers;veterinarians; students; and the like. In other embodiments, the remotecomputers 606 may be physically located in a non-medical setting, suchas a packing and shipping facility or deployed within a fleet ofdelivery or courier vehicles.

Continuing, the example environment 600 comprises a data store 608.Although shown as a single component, the data store 608 may beimplemented using multiple data stores that are communicatively coupledto one another, independent of the geographic or physical location of amemory device. Exemplary data stores may store data in the form ofartifacts, server lists, properties associated with servers,environments, properties associated with environments, computerinstructions encoded in multiple different computer programminglanguages, deployment scripts, applications, properties associated withapplications, release packages, version information for releasepackages, build levels associated with applications, identifiers forapplications, identifiers for release packages, users, roles associatedwith users, permissions associated with roles, workflows and steps inthe workflows, clients, servers associated with clients, attributesassociated with properties, audit information, and/or audit trails forworkflows. Exemplary data stores may also store data in the form ofelectronic records, for example, electronic medical records of patients,transaction records, billing records, task and workflow records,chronological event records, and the like.

Generally, the data store 608 includes physical memory that isconfigured to store information encoded in data. For example, the datastore 608 may provide storage for computer-readable instructions,computer-executable instructions, data structures, data arrays, computerprograms, applications, and other data that supports the functions andaction to be undertaken using the environment 600 and components shownin exemplary FIG. 6.

In a computing environment having distributed components that arecommunicatively coupled via the network 602, program modules may belocated in local and/or remote computer storage media including, forexample only, memory storage devices. Embodiments of the presentinvention may be described in the context of computer-executableinstructions, such as program modules, being executed by a computingdevice. Program modules may include, but are not limited to, routines,programs, objects, components, and data structures that performparticular tasks or implement particular abstract data types. Inembodiments, the computing device 604 may access, retrieve, communicate,receive, and update information stored in the data store 608, includingprogram modules. Accordingly, the computing device 604 may execute,using a processor, computer instructions stored in the data store 608 inorder to perform embodiments described herein.

Although internal components of the devices in FIG. 6, such as thecomputing device 604, are not illustrated, those of ordinary skill inthe art will appreciate that internal components and theirinterconnection are present in the devices of FIG. 6. Accordingly,additional details concerning the internal construction device are notfurther disclosed herein.

Regarding FIGS. 1 through 6, it will be understood by those of ordinaryskill in the art that the environment(s), system(s), and/or methods(s)depicted are not intended to limit the scope of use or functionality ofthe present embodiments. Similarly, the environment(s), system(s),and/or methods(s) should not be interpreted as imputing any dependencyand/or any requirements with regard to each component, each step, andcombination(s) of components or step(s) illustrated therein. It will beappreciated by those having ordinary skill in the art that theconnections illustrated the figures are contemplated to potentiallyinclude methods, hardware, software, and/or other devices forestablishing a communications link between the components, devices,systems, and/or entities, as may be utilized in implementation of thepresent embodiments. As such, the absence of component(s) and/orsteps(s) from the figures should be not be interpreted as limiting thepresent embodiments to exclude additional component(s) and/orcombination(s) of components. Moreover, though devices and components inthe figures may be represented as singular devices and/or components, itwill be appreciated that some embodiments can include a plurality ofdevices and/or components such that the figures should not be consideredas limiting the number of a devices and/or components.

It is noted that embodiments of the present invention described hereinwith reference to block diagrams and flowchart illustrations. However,it should be understood that each block of the block diagrams and/orflowchart illustrations can be implemented in the form of a computerprogram product, an entirely hardware embodiment, a combination ofhardware and computer program products, and/or apparatus, systems,computing devices/entities, computing entities, and/or the like carryingout instructions, operations, steps, and similar words usedinterchangeably (e.g., the executable instructions, instructions forexecution, program code, and/or the like) on a computer-readable storagemedium for execution. For example, retrieval, loading, and execution ofcode can be performed sequentially such that one instruction isretrieved, loaded, and executed at a time. In some embodiments,retrieval, loading, and/or execution can be performed in parallel suchthat multiple instructions are retrieved, loaded, and/or executedtogether. Thus, such embodiments can produce specifically-configuredmachines performing the steps or operations specified in the blockdiagrams and flowchart illustrations. Accordingly, the block diagramsand flowchart illustrations support various combinations of embodimentsfor performing the specified instructions, operations, or steps.

Additionally, as should be appreciated, various embodiments of thepresent disclosure described herein can also be implemented as methods,apparatus, systems, computing devices/entities, computing entities,and/or the like. As such, embodiments of the present disclosure can takethe form of an apparatus, system, computing device, computing entity,and/or the like executing instructions stored on a computer-readablestorage medium to perform certain steps or operations. However,embodiments of the present disclosure can also take the form of anentirely hardware embodiment performing certain steps or operations.

Many different arrangements of the various components depicted, as wellas components not shown, are possible without departing from the scopeof the claims below. Embodiments of our technology have been describedwith the intent to be illustrative rather than restrictive. Alternativeembodiments will become apparent readers of this disclosure after andbecause of reading it. Alternative means of implementing theaforementioned can be completed without departing from the scope of theclaims below. Certain features and subcombinations are of utility andmay be employed without reference to other features and subcombinationsand are contemplated within the scope of the claims.

What is claimed is:
 1. A computerized method comprising: generating aplurality of nodes as a ternary tree data structure for characters of aplurality of terms specific to a first terminology; generating anotherplurality of nodes in the ternary tree data structure for characters ofanother plurality of terms specific to a second terminology that isdifferent from the first terminology; determining that at least one ofthe plurality of nodes generated for the first terminology correspondsto at least one of the characters for the other plurality of termsspecific to the second terminology; and generating, for each of the atleast one of the plurality of nodes in the ternary tree data structure,a nested array that includes a first array having a term match value forthe first terminology and a second array having a term match value forthe second terminology, wherein the first and second arrays are nestedin the nested array, and wherein the nested array supports acomputerized search of the first and second terminologies in the ternarytree data structure.
 2. The method of claim 1, wherein the plurality ofnodes are arranged in the ternary tree data structure to represent theplurality of terms specific to the first terminology by connecting eachnode to at least one other node using at least one of a high pointer, anequal pointer, or a low pointer.
 3. The method of claim 1, wherein theother plurality of nodes are arranged in the ternary tree data structureto represent the other plurality of terms specific to the secondterminology by connecting each node to at least one other node using atleast one of a high pointer, an equal pointer, or a low pointer.
 4. Themethod of claim 1, further comprising determining that at least oneother of the plurality of nodes generated for the first terminology doesnot correspond to at least one of the characters for the other pluralityof terms specific to the second terminology.
 5. The method of claim 4,wherein generating another plurality of nodes for the characters of theother plurality of terms specific to the second terminology comprisesinserting an additional node into the ternary tree data structure forthe at least one of the characters for the other plurality of termsspecific to the second terminology.
 6. The method of claim 5, furthercomprising generating, for the additional node inserted into the ternarytree data structure, a corresponding array storing a term match value.7. One or more computer-readable storage media having computer-readableinstructions embodied therein for execution by one or more processors toperform a method, the media comprising: generating a plurality of nodesfor characters of a plurality of terms specific to a first terminologyin a ternary tree data structure; generating another plurality of nodesfor characters of another plurality of terms specific to a secondterminology in the ternary tree data structure; determining that atleast one of the plurality of nodes generated for the first terminologycorresponds to at least one of the characters for the other plurality ofterms specific to the second terminology; and generating, for each ofthe at least one of the plurality of nodes, a nested array that includesa first array having a term match value for the first terminology and asecond array having a term match value for the second terminology,wherein the first and second arrays are nested in the nested array, andwherein the nested array supports a computerized search of the first andsecond terminologies in the ternary tree data structure.
 8. The media ofclaim 7, wherein the plurality of nodes are arranged in the ternary treedata structure to represent the plurality of terms specific to the firstterminology by connecting each node to at least one other node using atleast one of a high pointer, an equal pointer, or a low pointer.
 9. Themedia of claim 7, wherein the other plurality of nodes are arranged inthe ternary tree data structure to represent the other plurality ofterms specific to the second terminology by connecting each node to atleast one other node using at least one of a high pointer, an equalpointer, or a low pointer.
 10. The media of claim 7, further comprisingdetermining that at least one other of the plurality of nodes generatedfor the first terminology does not correspond to at least one of thecharacters for the other plurality of terms specific to the secondterminology.
 11. The media of claim 10, wherein generating anotherplurality of nodes for the characters of the other plurality of termsspecific to the second terminology comprises inserting an additionalnode into the ternary tree data structure for the at least one of thecharacters for the other plurality of terms specific to the secondterminology.
 12. The media of claim 11, further comprising generating,for the additional node inserted into the ternary tree data structure, acorresponding array storing a term match value.
 13. One morenon-transitory computer-readable media having computer-readableinstructions embodied thereon that when executed perform a method, themedia comprising: generating a ternary tree data structure having aplurality of nodes for characters of a plurality of terms specific to afirst terminology and another plurality of nodes for characters ofanother plurality of terms specific to a second terminology; generating,for each of the plurality of nodes determined to correspond to at leastone of the characters for the other plurality of terms specific to thesecond terminology, a nested array that includes a first array having aterm match value for the first terminology and a second array having aterm match value for the second terminology, wherein the first andsecond arrays are nested in the nested array, and wherein the nestedarray supports a computerized search of the first and secondterminologies in the ternary tree data structure; performing a stringquery designated for the first terminology in the ternary tree datastructure by traversing the plurality of nodes for characters of theplurality of terms specific to the first terminology to locate a firstsearch result corresponding to the string query, the first search resultcorresponding to one node in the plurality of nodes, the one node havinga corresponding array storing at least a term match value of the firstterminology; and returning the first search result that is specific tothe first terminology.
 14. The media of claim 13, wherein the pluralityof nodes are arranged in the ternary tree data structure to representthe plurality of terms specific to the first terminology by connectingeach node to at least one other node using at least one of a highpointer, an equal pointer, or a low pointer.
 15. The media of claim 13,wherein the other plurality of nodes are arranged in the ternary treedata structure to represent the other plurality of terms specific to thesecond terminology by connecting each node to at least one other nodeusing at least one of a high pointer, an equal pointer, or a lowpointer.
 16. The media of claim 13, further comprising determining thatat least one other of the plurality of nodes generated for the firstterminology does not correspond to at least one of the characters forthe other plurality of terms specific to the second terminology.
 17. Themedia of claim 16, wherein generating another plurality of nodes for thecharacters of the other plurality of terms specific to the secondterminology comprises inserting an additional node into the ternary treedata structure for the at least one of the characters for the otherplurality of terms specific to the second terminology.
 18. The media ofclaim 17, further comprising generating, for the additional nodeinserted into the ternary tree data structure, a corresponding arraystoring a term match value.
 19. The media of claim 13, furthercomprising performing another string query designated for the secondterminology in the ternary tree data structure by traversing a portionof the plurality of nodes for the characters of the plurality of termsspecific to the first terminology and traversing a portion of the otherplurality of nodes for the characters of the other plurality of termsspecific to the second terminology.
 20. The media of claim 19, furthercomprising: locating a second search result corresponding to the otherstring query, the second search result corresponding to a node in theplurality of nodes or the other plurality of nodes, the one node havinga corresponding array storing at least a term match value of the secondterminology; and returning the second search result that is specific tothe second terminology.